const path = require('path')
const isProd = process.env.NODE_ENV === 'production'

function resolve (dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  // 这个值也可以被设置为空字符串 ('') 或是相对路径 ('./')，这样所有的资源都会被链接为相对路径，这样打出来的包可以被部署在任意路径，
  publicPath: isProd ? './' : '/',
  // 资源目录
  assetsDir: 'public',
  // 否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了，但是这会让你的应用额外增加 10kb 左右。
  runtimeCompiler: true,
  // 打包输出路径
  outputDir: 'dist/web',
  // webpack的相关配置
  configureWebpack: {
    // 入口
    entry: './src/renderer/main.js',
    resolve: {
      extensions: [ '.js', '.vue', '.json', '.ts', '.less' ],
      // 别名
      alias: {
        '@': resolve('src/renderer')
      }
    }
    // module: {
    //   rules: [{
    //     test: /\.(html)(\?.*)?$/,
    //     use: 'vue-html-loader'
    //   }]
    // }
  },
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: isProd,
    // 开启 CSS source maps?
    sourceMap: !isProd,
    // css预设器配置项
    loaderOptions: {
      less: {
        modifyVars: {
          'primary-color': '#c62f2f',
          'link-color': '#c62f2f',
          'border-radius-base': '4px'
        },
        javascriptEnabled: true
      }
    },
    // 启用 CSS modules for all css / pre-processor files.
    requireModuleExtension: true
  },
  // 第三方插件配置
  pluginOptions: {
    // vue-cli-plugin-electron-builder配置
    electronBuilder: {
      // 输出目录
      outputDir: 'dist/electron',
      // 主进程文件入口
      mainProcessFile: 'src/main/main.js',
      // 提供一个文件数组，当更改时，它将重新编译主进程并重新启动电子
      // 默认情况下将添加主进程文件
      mainProcessWatch: [ 'src/main' ],
      chainWebpackMainProcess: config => {
        config.plugin('define').tap(args => {
          args[ 0 ][ 'IS_ELECTRON' ] = true
          return args
        })
      },
      chainWebpackRendererProcess: config => {
        config.plugin('define').tap(args => {
          args[ 0 ][ 'IS_ELECTRON' ] = true
          return args
        })
      }
    }
  }
}
